package com.common;

/**
 * 消息发送工具类
 */
public class MsgUtil {

    private MsgUtil() {

    }

    /**
     * 发生送文件
     *
     * @param file
     * @return
     */
    public static Msg SEND_FILE(String me, String he,byte[] message, byte[] file) {
        Msg msg = new Msg();
        msg.setMe(me);
        msg.setHe(he);
        msg.setType(MsgType.SEND_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(message));
            msg.setFile(GZipUtils.gzip(file));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 接受聊天消息
     *
     * @param me
     * @param he
     * @param file
     * @return
     */
    public static Msg REC_FILE(String me, String he,byte[] message, byte[] file) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.REC_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(message));
            msg.setFile(GZipUtils.gzip(file));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 接收方要求发送方发文件
     *
     * @param me
     * @param he
     * @param file
     * @return
     */
    public static Msg REQ_FILE(String me, String he, byte[] file) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.REQ_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(file));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }


    /**
     * 报告分片文件发送成功文件
     *
     * @param message
     * @return
     */
    public static Msg OK_FILE(String me, String he, String message) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.OK_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(message.getBytes()));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 文件发送失败
     *
     * @param message
     * @return
     */
    public static Msg FAIL_FILE(String me, String he, String message) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.FAIL_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(message.getBytes()));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 报告分片文件传输完成
     *
     * @param message
     * @return
     */
    public static Msg END_FILE(String me, String he, String message) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.END_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(message.getBytes()));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 获取群列表
     *
     * @param me
     * @return
     */
    public static Msg GET_GROUP(String me) {
        Msg msg = new Msg();
        msg.setMe(me);
        msg.setType(MsgType.GET_GROUP);
        return msg;
    }

    /**
     * 接收群列表
     *
     * @param me
     * @param message
     * @return
     */
    public static Msg REC_GROUP(String me, String message) {
        Msg msg = new Msg();
        msg.setMe(me);
        msg.setType(MsgType.REC_GROUP);
        try {
            msg.setBytes(GZipUtils.gzip(message.getBytes()));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }


    /**
     * 开始发送文件，发送一些文件信息
     *
     * @param message
     * @return
     */
    public static Msg START_FILE(String me, String he, byte[] message) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.START_FILE);
        try {
            msg.setBytes(GZipUtils.gzip(message));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 发送一些聊天信息
     *
     * @param message
     * @return
     */
    public static Msg SEND_MSG(String me, String he, String message) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.SEND_MSG);
        try {
            msg.setBytes(GZipUtils.gzip(message.getBytes()));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }


    /**
     * 接受聊天消息
     *
     * @param message
     * @return
     */
    public static Msg REC_MSG(String me, String he, byte[] message) {
        Msg msg = new Msg();
        msg.setHe(he);
        msg.setMe(me);
        msg.setType(MsgType.REC_MSG);
        try {
            msg.setBytes(message);
        } catch (Exception e) {
            return null;
        }
        return msg;
    }

    /**
     * 连接信息
     *
     * @param message
     * @return
     */
    public static Msg CONNECT(String me, String message) {
        Msg msg = new Msg();
        msg.setMe(me);
        msg.setType(MsgType.CONNECT);
        try {
            msg.setBytes(GZipUtils.gzip(message.getBytes()));
        } catch (Exception e) {
            return null;
        }
        return msg;
    }
}
